package com.pickup.netty.server.session;


import io.netty.channel.Channel;

import java.util.Map;

/**
 * 会话管理接口
 */
public interface Session {

    /**
     * 绑定会话
     * @param channel 哪个 channel 要绑定会话
     * @param UserId 会话绑定用户
     */
    void bind(String UserId, Channel channel);

    /**
     * 解绑会话
     * @param channel 哪个 channel 要解绑会话
     */
    void unbind(Channel channel);


    /**
     * 绑定聊天组会话
     * @param channel 哪个 channel 要绑定会话
     * @param UserId 会话绑定用户
     */
    void bindGroup(String GroupId, String UserId, Channel channel);

    /**
     * 解绑聊天组会话
     * @param UserId 哪个 channel 要解绑会话
     */
    void unbindGroup(String GroupId,  String UserId);

    /**
     * 获取聊天组会话
     * @param UserId 哪个 channel 要解绑会话
     */
    Channel getGroup(String GroupId, String UserId);


    /**
     * 获取聊天组所有成员
     * @param GroupId
     */
    public Map<String, Channel> getAllGroup(String GroupId);

    /**
     * 根据用户名获取 channel
     * @param UserId 用户名
     * @return channel
     */
    Channel getChannel(String UserId);


}
